#include "graph.h"
#include<bits/stdc++.h>
using namespace std;
int n=1;
int d[205],vis[205][205];
int s[200005],lst[200005],fa[200005],dep[200005];
vector<int> g[205];
void sol(int u,int y){
	int x=u,z=0;
	while(Color()!=3&&x){
		Move(lst[x],2);
		s[++z]=LastRoad();
		x=fa[x];
	}
	if(x){
		g[u].push_back(x);
		g[x].push_back(u);
		vis[x][y]=1;
	}
	while(z) Move(s[z],2),z--;
}
void dfs(int x,int f){
	lst[x]=LastRoad();
	fa[x]=f;
	d[x]=NumberOfRoads();
	dep[x]=dep[f]+1;
	int o=lst[x];
	for(int i=1;i<=d[x];i++){
		if(i==o) continue;
		Move(i,2);
		int c=Color();
		if(c==1){
			n++;
			int id=n;
			g[x].push_back(n);
			g[n].push_back(x);
			dfs(n,x);
		}
		else if(!vis[x][i]){
			Move(LastRoad(),3);
			sol(x,LastRoad());
		}
	}
	Move(o,2);
}
int viss[205],ans[205];
void bfs(int rt){
	for(int i=1;i<=n;i++) viss[i]=0,dep[i]=0;
	viss[rt]=1;
	queue<int> q;
	q.push(rt);
	while(!q.empty()){
		int x=q.front();
		q.pop();
		for(int i:g[x]){
			if(!viss[i]){
				viss[i]=1;
				dep[i]=dep[x]+1;
				q.push(i);
			}
		}
	}
	for(int i=1;i<=n;i++) ans[dep[i]]++;
}
void Inspect(int R){
    dfs(1,0);
    for(int i=1;i<=n;i++) bfs(i);
    for(int i=1;i<=R;i++) Answer(i,ans[i]);
}
